package com.ericsson.enap.modules.monitor.service;

import com.ericsson.enap.modules.topology.entity.CabSwitch;
import com.ericsson.enap.modules.monitor.entity.SwitchInterfaceStatus;
import com.ericsson.enap.modules.monitor.entity.SwitchPortData;
import com.ericsson.enap.modules.monitor.entity.SwitchTotalData;
import com.ericsson.common.util.TelnetUtils;

import java.util.List;
import java.util.Map;

/**
 * 通过Telnet 获取switch相关数据
 */
public interface SwitchEquipDataService {
    /**
     * 获得告警信息
     * @param command
     * @return
     */
    String getAlarm(TelnetUtils telnetUtils, String command);

    /**
     * 获得交换机Uptime
     * @param command
     * @return
     */
    SwitchTotalData getUpTime(TelnetUtils telnetUtils, String command);

    /**
     * 获得交换机vlan
     * @param command
     * @return
     */
    String getVlan(TelnetUtils telnetUtils,String command);

    /**
     * 关闭交换机数据分页显示
     * @param command
     */
    void displayPage(TelnetUtils telnetUtils,String command);

    /**
     * 获得交换机IPV4路由信息
     * @param command
     * @return
     */
    String getIpv4Route(TelnetUtils telnetUtils,String command);

    /**
     * 获得交换机IPV6路由信息
     * @param command
     * @return
     */
    String getIpv6Route(TelnetUtils telnetUtils,String command);

    /**
     * 获得交换机配置信息
     * @param command
     * @return
     */
    String getConfiguration(TelnetUtils telnetUtils,String command);

    /**
     * 获得交换机接口信息
     * @param telnetUtils
     * @param command
     * @return
     */
    String getInterface(TelnetUtils telnetUtils,String command);

    /**
     * 解析switch中的接口状态
     * @param interfaceMsg
     */
    List<SwitchInterfaceStatus> explainInterfaceStatus(String interfaceMsg,String switchName, Map<String,String> statusMap);

    /**
     * 解析Interface的details 数据
     * @param telnetUtils
     * @param command
     * @return
     */
    List<SwitchPortData> getInterfaceDetails(TelnetUtils telnetUtils, String command, String programDate, CabSwitch cabSwitch,Map<String,SwitchPortData> beforeSwitchPortDataMap);

    /**
     * 退出登录设备
     * @param telnetUtils
     * @param command
     */
    void exitEquipment(TelnetUtils telnetUtils,String command);

}
